home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / LORD2B6.ZIP / REFHELP.DOC < prev    next >
Text File  |  1997-05-19  |  26KB  |  656 lines

  1.  
  2.         *******  HOW TO MAKE YOUR OWN REF FILES FOR LORD II *******
  3.  
  4.                         For LORD II:New World V1.00
  5.                       (and I'm sorry these docs suck!)
  6.  
  7. Check 3rdparty.doc for more info.
  8.  
  9. The heart of this system is the .REF format.  It is a script language that
  10. can be used to do complex gaming things, like math and getting random
  11. numbers, adding and deleting other varibles in the game - nearly
  12. everything a simple basic could do.
  13.  
  14. REF is short for - Relay Execution File?  Reference File? 
  15.  
  16. Although tricky at first, making a ref file is really pretty simple.  If
  17. something doesn't work, just go look at your .REF file, (a simple text
  18. file) and fix it!  The .ref language will tell you at runtime about
  19. words it doesn't understand or syntax errors.
  20.  
  21.  To see a demonstration of most commands, edit LORD II's .ref files.
  22.  
  23.  *  If a command isn't understood, it will tell you upon execution
  24.  *  .REF size is limited by conventional memory
  25.  *  REF files are completely loaded, and interpreted BEFORE execution for
  26.     speed
  27.  *  Allows BEGIN and END statements, thousands of levels deep
  28.  *  Ansi and SethAnsi (Sorry, don't have another name yet, <G> ) are
  29.     automatically displayed correctly locally and remotely
  30.  *  They can save and write their own data
  31.  
  32.                   ** Varibles the REF's use: **
  33.  
  34.  
  35. LOCAL : Will equal 5 if the ref is being viewed locally, otherwise 0.
  36. RESPONSE (or RESPONCE) : What @CHOICE returned.
  37.  
  38.     NOTE:  If the following are found in a string being displayed they
  39.            will be replaces with their values:
  40.  
  41. `V01 through `V40 These are the 40 GLOBAL longint varibles. (for numbers)
  42. `S01 through `S10 These are 10 GLOBAL string varibles. (for text)
  43. `P01 through `P99 These are the 99 player longint varibles. (for numbers)
  44. `T01 through `T99 these are 99 player byte varibles.  (255 max)
  45. `I01 through `I99 these are the 99 player integer item varibles. 32000 max)
  46. `+01 through `+99 - Same as above, but shows the item NAME, not amount.
  47.  
  48. `v05 and `p11 are reserved if you wish to use LORD2's 'limited movements'.
  49.  
  50. x  (players x cordinates)
  51. y  (players y cordinates)
  52. map (players current block #)
  53. dead (1 is player is dead)
  54. sexmale (1 if player is male)
  55. narm (current armour #)
  56. nwep (current weapon #)
  57. money (players moola)
  58. bank (moola in bank)
  59. enemy (so you can change the enemy name in the #die file, can't remember
  60.        why I wanted this but...)
  61.  
  62. ALL The above can also be changed. Examples:
  63.  
  64. @do x is 20   <-sets X to 20
  65. @do `i05 is 90  <- Gives dude 90 item 5's (item is defined in l2cfg.exe)
  66.  
  67. These are symbols that will be translated automatically when using
  68. @show or @do write.  You can also make variables equal these, etc. Simular
  69. to Renegades MCI codes.
  70.  
  71. `N this is the users name.
  72. `E Enemy name.
  73. `G Current Graphics Level.
  74. `X Adds a space.
  75. `D Sends a #8 (delete).
  76. `0 through `9 and `! through `^ change color.
  77. `W One tenth a second wait.
  78. `L About a half second wait.
  79. `\ Simulates a carriage return.
  80. `r0 through `r7, change background color.
  81. `c Clears the screen and simulates 2 carriage returns.
  82.  
  83. &realname | Real name as passed by the drop file
  84. &date | The date and time like 12/12/97 format.
  85. &nicedate | Time AND date like 5:19 on 12/12.
  86. s&armour | equipped armour name.
  87. s&arm_num | equipped armour by #.
  88. s&weapon | equipped weapon name.
  89. s&wep_num | equipped weapon by #.
  90. s&son | son/daughter, depending on current users sex
  91. s&boy | boy/girl, depending on current users sex
  92. s&man | man/lady, depending on current users sex
  93. s&sir | sir/ma'am, depending on current users sex
  94. s&him | him/her, depending on current users sex
  95. s&his | his/her, depending on current users sex
  96. &money | current users gold
  97. &bank | current users gold in bank
  98. &lastx | users x position before last move.
  99. &lasty | users y position before last move - helpfull to determine which
  100.          direction they came from before the hit the ref, etc.
  101. &map | current map #
  102. &time | Current age of the game in days.
  103. &timeleft | Minutes the user has left in the door.
  104. &sex | returns 0 if player is female, 1 if player is male
  105. &playernum | The account # of the current player.
  106.  
  107. (NOTE: Vars starting with s& usually means if you can control the case
  108. of the first letter of the outpout by the case of the first s - so
  109. S&sir would return "Sir" and s&sir would return "sir")
  110.  
  111. (NOTE: These waits are the SAME on all computers, goes by the clock)
  112.  
  113. ***************** COMMAND LIST, A GOOD THING TO PRINT! *******************
  114.  
  115.  The newest ones are listed first.. I'll do those in lowercase, that upper
  116.  case is hard on the eyes kinda.
  117.  
  118. @progname : The line UNDER this will be the status bar name of the game
  119. @moremap : The line UNDER this will be the new <more> prompt.
  120. @drawmap : This draws the current map the user is on.
  121. @update : Draws all the people on the screen.
  122. @update_update : Writes current player data to UPDATE.TMP file.  (if you
  123.                  can't wait until they are out of the ref file for some
  124.                  reason)
  125. @itemexit : Tells the item editor to automatically return the player to the
  126.             map screen after the item is used.  It is up to you to use the
  127.             @drawmap and @update commands as usual though.
  128. @busy : Makes the player appear 'red' to other players currently playing.
  129. @offmap : Makes the player appear to disappear to other players currently
  130.           playing.  (so it looks like they actually went into the hut)
  131. @pauseoff : You can show long ansis etc and it won't do its usuall every
  132.             24 line pause.
  133. @pauseon : Turns pause back on.
  134.  
  135. @do `v01 is 1 : Sets the default option on the next lightbar selection,
  136.              ALWAYS use before a @choice command.
  137. @moveback : Use this to move the player back to where he moved from - good
  138.             for when they push against a treasure chest or such, and you
  139.             don't want them to appear inside of it when they are done.
  140. @do addlog : The line UNDER this command is added to the 'lognow.txt' file.
  141. @loadworld : Loads globals and world data - has never been used, but is
  142.              included just in case.
  143. @saveworld : Saves stats and world data - only use yet is in right after
  144.              @#maint is called to save random stats set for that day and
  145.              such.
  146. @loadmap <map #> : Very handy - Lets you change someones map location in
  147.                    a ref file.  This is the 'block #' not the physical map
  148.                    location, so it could be 1 to 1600.  (make sure it exist
  149.                    in l2cfg.exe though) Be SURE to change the map variable
  150.                    too!!  Using this and changing the X and Y
  151.                    cords effectivly lets you do a 'warp' from a .ref file.
  152.  
  153. @statbar | Draws the statbar.
  154. @clearblock <start y> <end y> | Clears lines quick - @clear block 20 24 would
  155.                                 clear 4 lines starting at 20
  156.  
  157. @bitset <`t01 to `t99> <bit> <0 or 1> | Sets a certain bit in a byte var, lets
  158. you have 8 yes/no vars in one `t byte var! Examp: @bitset `t12 1 1 (this
  159. turns bit 1 in `t12 to ON)
  160.  
  161. Now of course you'll want to check sometimes to see if a bit is yes or no...
  162.  
  163. @if bitcheck `t12 1 1 then do
  164.   @begin
  165.   @show
  166.   Yeah!  Bit 1 of t12 is TRUE!!! Yay.
  167.   @end
  168.  
  169. It works like a standard @IF after the 'then' part.
  170.  
  171. ALSO:  Check the CHOICE command, you can check a bit there too, like this:
  172. +`t12 1 Hey, byte 12 bit 1 is TRUE!
  173.  
  174. Use '-' for false.
  175.  
  176. @quebar
  177. <message>
  178.  
  179. The above will add a message to the saybar que - This means if the game
  180. is currently displaying a message, or has a few to display, it will wait
  181. until the proper time.
  182.  
  183. @saybar
  184. <message>
  185.  
  186. The above is like quebar, except it displays the message instantly,
  187. without taking into consideration that a message might have just been
  188. displayed and this will write over it.
  189.  
  190. @chooseplayer `p20 | Will prompt user for another players name - its the
  191.                       standard 'full or partial name' thing, with a 'you mean
  192.                       this guy?'.  It returns the players # or 0 if none.
  193.  
  194. -=-=-= Stuff to get info from OTHER players in the game, assuming you
  195.        know their player #...
  196.  
  197. @do `s01 is getname 8 | Would get the name of player 8 and put it in `s01.
  198.                      (only works with `s vars)
  199. @do `p20 is deleted 8 | Puts 1 (yes) or 0 (no) in `p20.
  200.                      (only works with `p vars)
  201.  
  202. @DO GOTO <header or LABEL name>
  203. @NOCHECK : This makes it not scan for labels/headers before running it.
  204. @ROUTINE <Header or label name> IN <Filename of .REF file> (only one parm is
  205.           given, it assumes it is in the current .ref)
  206. @ROUTINEABORT : Stops it from returning.
  207. @RUN <Header or label name> IN <Filename of .REF file>
  208. @CHOICE
  209. @VERSION  <Version it needs>
  210. @SHOW  : Shows following text/ansi.  Stops when a @ is hit on
  211. @SHOW SCROLL : Same thing, but puts all the text in a nifty scroll window
  212. @REPLACE <this> <that> <in this> : Replaces this with that in an `s var.
  213. @REPLACEALL <this> <that> <in this> : Same as above but replaces all instances
  214. @DO WRITE
  215. @DO BEEP :  Makes a weird beep noise, locally only
  216. @DISPLAY <filename> <options> : This display an entire file.  Possible
  217.                                 options are:  NOPAUSE and NOSKIP.  Put a
  218. @IF <Varible> <Math> <Varible> (Math can be MORE, LESS, NOT, IS)
  219. @GRAPHICS IS <Num> :  3 or more enable remote ANSI.  If you never wanted
  220. @CLOSESCRIPT : This ends the script.
  221. @CLEAR SCREEN: Clears entire screen.
  222. @KEY : Does a [MORE] prompt, centered on current line.
  223. @KEY NODISPLAY : Waits for keypress without saying anything.
  224. @DO <Var To Change> <How To Change It> <Change With What>
  225. Ways to change it:(-,+,/,*,IS)
  226. @DO <Varible to put # in> RANDOM <Highest random number> <number added to it>
  227. @DO MOVE <X> <Y> : This moves the curser.  (like GOTOXY in TP) Enter 0 for
  228. @DO GETCHAR <String var to put it in> Grabs a keypress, with timeslicing.
  229. @DO READSPECIAL <String var to put it in> <legal chars, 1st is default>
  230. @DO GETKEY <String var to put it in> : This command is usefull, *IF* a key
  231. @DO READNUM <MAX LENGTH> (Optional: <FOREGROUND COLOR> <BACKGROUND COLOR>
  232. <DEFAULT>: The number is put into `V40.
  233. @DO READSTRING <MAX LENGTH> <DEFAULT> <VAR TO PUT IT IN> : Get a string.
  234. @DO COPY TO NAME  Put whatever is in `S10 into `N.  (name)
  235. @IF <Word or var> INSIDE <Word or var> THEN (ect) :  Allows you to search
  236. a string for something inside of it.  Not case sensitive.
  237. @DO STRIP <string var> : This strips beginning and end spaces of a string.
  238. @DO UPCASE <string var> : Makes a string all capitals.
  239. @DO <num var> IS LENGTH <String var>  : Gets length, smart way.
  240. @DO <num var> IS REALLENGTH <String var>  : Gets length dumb way. (includes
  241. @DO PAD <string var> <length> :  Adds spaces to end until string is as long
  242.                                  as <length>.
  243. @IF <name of file> EXISTS TRUE THEN (..ect..)
  244. @IF <name of file> EXISTS FALSE THEN (..ect..)
  245. @WRITEFILE <file name>
  246. <Thing to write>
  247. <Thing to write>
  248. <ect until next @ at beginning of string is hit>
  249. @READFILE <file name>
  250. <Var to read into>
  251. <Var to read into>
  252. <Ect until next @ at beginning of string is hit>
  253. @DO DELETE <file name>  : Both delete a file.
  254. @DO TRIM <file name> <number to trim to> :  Trims text file
  255. @HALT <error level> : Quits and returns correct error level.
  256. @SHELL <.EXE, BAT or COM> <Parms, up to 8> (note, use `* for node num)
  257. @DECLARE <Label/header name> <offset in decimal format>
  258.  
  259. ************** NOW TO GO INTO MORE DETAIL ON EACH COMMAND******************
  260.  
  261.                       ** About headers **
  262.  
  263. Some may be familiar with the way the door LORD keeps track of it's many
  264. ansi's and other display files.  It gives each one a HEADER.  Any header
  265. can be reached with a @DO GOTO <header name> command.
  266.  
  267. Example header:
  268.  
  269. @#START
  270.  
  271.  
  272. This MUST be in a ref file, this is where RTREADER will start.  Anytime
  273. you wish to return to the start, just do a:
  274. @DO GOTO START
  275. command.
  276.  
  277.                       ** Another kind of header **
  278.  
  279. Anytime RTREADER hit's a @#, it knows another section is starting, and
  280. quits.  If you would like to use goto commands INSIDE of a 'section', use
  281. the @LABEL command.  They work like headers, but don't cause a section to
  282. 'quit'.
  283.  
  284. Example:
  285.  
  286. @LABEL LOOP
  287.  
  288. @DO GOTO LOOP
  289.  
  290. You can have as many headers/labels as you want, however, the first 300
  291. 'headers' and 'labels' will be INSTANT access, anything past will not be
  292. quite as quick.
  293.  
  294. This 'speed up' routine runs by default on all .REF files.  (Processes the
  295. labels and headers before running)
  296.  
  297. This takes a noticable pause when doing so, so you may wish to disable this
  298. feature.  Add a
  299.  
  300. @NOCHECK
  301.  
  302. Somewhere near the beginning, it won't check past that point.
  303.  
  304. Also, the Reader is now capable of mapping labels/headers on the fly if it
  305. runs across one that isn't - So the SECOND time you run GOTO it, it's
  306. instantanous.  (this is always active)
  307.  
  308. @DECLARE <Label/header name> <offset in decimal format>
  309.  
  310. This statement allows you to declare a label, and where it is.  Don't
  311. use this unless you know what you are doing - I was thinking I could make
  312. a SPEEDREF.EXE that simply maps out all the headers and makes them all
  313. @DECLARE statements, followed by a @NOCHECK and puts them in the beginning.
  314.  
  315. This would be tricky because every time you add something, the offset
  316. changes...
  317.  
  318.  
  319. NOTE:  Headers like all other commands in RTREADER are *NOT* case
  320.        sensitive.  You can type the whole thing in lowercase, or uppercase
  321.        - or mixed.  It just don't matter man.
  322.  
  323.  
  324.                       ** Basic command list: **
  325.  
  326.  
  327. @GRAPHICS IS <Num> :  3 or more enable remote ANSI.  If you never wanted
  328.                       to send ANSI, you could set this to 1. You will
  329.                       probably never touch this one.
  330.  
  331. @ROUTINE <Header or label name> IN <Filename of .REF file>
  332.  
  333. The @ROUTINE command is usefull - You can use it jump to a completely new
  334. .REF file - when it's finished there, instead of dropping to DOS, it will
  335. load back up the original .REF file and continue where it left off.
  336.  
  337. @RUN <Header or label name> IN <Filename of .REF file>
  338.  
  339. Same thing as above, but doesn't come back to the original .REF.
  340.  
  341. @CHOICE
  342. <A choice>
  343. <another choice>
  344. <ect..When a @ is found in the beginning of a choice it quits>
  345.  
  346. This gives the user a choice.
  347.  
  348. The responce is put into varible RESPONCE.  To set which choice the curser
  349. starts on, put that number into `V01.
  350.  
  351. ** EXAMPLE OF @CHOICE COMMAND **
  352.  
  353. @DO `V01 IS 1 ;which choice should be highlighted when they start
  354.  
  355. (now the choice part)
  356.  
  357. @CHOICE
  358. Yes   <- Defaults to this, since it's 1
  359. No
  360. I don't know
  361. Who cares
  362. @IF RESPONCE IS 3 THEN DO
  363.   @BEGIN
  364.   @DO `P01 IS RESPONCE
  365.   @SHOW
  366.  
  367. You chose `P01!, silly boy!
  368.  
  369.   @END
  370.  
  371. The choice command is more usefull now; you can now define *IF* type
  372. statements so a certain choice will only be there if a conditional statement
  373. is met.
  374.  
  375.  
  376. For instance:
  377.  
  378. @CHOICE
  379. Yes
  380. No
  381. =`p20 500 Hey, I have 500 exactly!
  382. !`p20 500 Hey, I have anything BUT 500 exactly!
  383. >`p20 500 Hey, I have MORE than 500!
  384. <`p20 100 Hey, I have LESS than 100!
  385. >`p20 100 <`p20 500 I have more then 100 and less than 500!
  386.  
  387. Also:  If you are using bitchecking with `t (byte) vars, you can have a if
  388. bit is true or false, like this:
  389.  
  390. +`t12 1 Hey! Byte 12's bit 1 is TRUE! (which is 1)
  391. -`t12 3 Hey! Byte 12's bit 3 is FALSE! (which is 0)
  392.  
  393. The = > and < commands can be stacked as needed.  If `p20 was 600, only
  394. option 2 would be available, and RESPONSE would be 2 after the user hit it.
  395.  
  396. IMPORTANT NOTE:  Never have spaces AFTER lines under a choice command.. This
  397. can make options not show up, etc... still working on why..
  398.  
  399. @VERSION  <Version it needs>  : For instance, you would put
  400.           @VERSION 2 for this version of RTREADER.  (002) If it is run
  401.           on Version 1, (could happen) a window will pop up warning the
  402.           person he had better get the latest version.
  403.  
  404. @SHOW           : Shows following text/ansi.  Stops when a @ is hit on
  405.                   beginning of line.
  406.  
  407. @SHOW SCROLL          : Same thing, but puts all the text in a nifty scroll
  408.                         window. (scroll window has commands line Next Screen,
  409.                         Previous Screen, Start, End and eXtract to file.
  410.                         (that last one is only shown and executed locally)
  411.  
  412. @DO WRITE
  413. <Stuff to write>
  414.  
  415. Same thing as regular @SHOW, but does only one line, without a
  416. line feed.  Used with @DO MOVE this is good for putting prompts,
  417. right in front of READNUM and READSTRING's.
  418.  
  419. NOTE:  You can use Vars mixed with text, ansi and color codes in the
  420. <stuff to write> part.  Works this way with most stuff.
  421.  
  422. @DISPLAY <filename> <options> : This display an entire file.  Possible
  423.                                 options are:  NOPAUSE and NOSKIP.  Put a
  424.                                 space between options if you use both.
  425.  
  426. @IF <Varible> <Math> <Thing the varible must be, or more or less then, or
  427. another varible>  (Possible math functions: EQUALS, MORE, LESS, NOT)
  428.  
  429.  
  430. @CLOSESCRIPT : This ends the script.
  431. @CLEAR SCREEN: Clears entire screen.
  432. @KEY : Does a [MORE] prompt, centered on current line.
  433. @KEY NODISPLAY : Waits for keypress without saying anything.
  434.  
  435. @DO : This statement does a lot - It can be put a the end of a @IF statement
  436.       also.  (Some commands need @DO in front, some don't.  If they do, they
  437.       can be used at the end of an @IF statement, if not, you can't.  (like
  438.       @SHOW)  You would need to use the @BEGIN and @END with the @IF to do
  439.       it conditionally.
  440.  
  441. EXAMPLES OF @DO:
  442.  
  443. Possible DO math symbols are:
  444.  
  445. @DO <Number To Change> <How To Change It> <Change With What>
  446.  
  447. Ways to change it:
  448.  
  449. - <- Take number away
  450. + <- Addition
  451. / <- Division
  452. * <- Multiplication
  453. IS <- Makes same as
  454.  
  455. NOTE:  You can also do this with `S (string vars) but you are limited to
  456. only using IS.  (no math can be done with strings) (See the string section)
  457.  
  458. @IF `V04 MORE 500 THEN DO `V04 - 500
  459. (This would take 500 from `V04 if they had it)
  460. (+ would add money, IS would MAKE it 500)
  461. @IF `V04 MORE 500 THEN DO
  462.  @BEGIN
  463.  @SHOW
  464.  `2You have more then 500!  In fact you have `V04!
  465.  @END
  466.  (if @BEGIN is followed by a @DO it will be executed, otherwise skipped)
  467.  (In @DO WRITE, @SAY and @SHOW (Except SHOW SCROLL) it will print the `V,
  468.   `P and `S varibles - It also understands:
  469.  `N (user name)
  470.  `* (node number)
  471.  
  472. @DO <Varible to put # in> RANDOM <Highest random number> <number to add to it>
  473.  
  474. This is how you generate random numbers.  To generate a number between 500 and
  475. 1000 and put it in varible `P05 you would put:
  476.  
  477. @DO `P05 RANDOM 500 500
  478.  
  479. @DO MOVE <X> <Y> : This moves the curser.  (like GOTOXY in TP) Enter 0 for
  480.                    a number will default to 'current location'.
  481.  
  482.  
  483.                **** STRING AND FILE COMMANDS ****
  484.  
  485. @DO READCHAR <string var to put it in> -Waits for a key to be pressed, uses
  486. DV and windows time slicing while waiting.
  487.  
  488. @DO READSPECIAL (String var to put it in> <legal chars, 1st is default>
  489. Example:
  490.  
  491. @do write
  492. Would you like to kill the monster? Y/N :
  493. @DO READSPECIAL `s01 YN
  494. if `s01 is Y then do
  495.  @begin
  496.  @show
  497. You killed him!
  498.  @end
  499.  
  500. The above would ONLY allow the person to hit Y or N - if he hit ENTER, it
  501. would be the same as hitting Y, because that was listed first.  
  502.  
  503. @DO GETKEY <String var to put it in> : This command is usefull, *IF* a key
  504.                                        IS CURRENTLY being pressed, it puts
  505.                                        that key into the string var.
  506.                                        Otherwise, it puts a '_' in to signal
  507.                                        no key was pressed.
  508.  
  509.                                        Good way to stop a loop.
  510.  
  511. @DO READNUM <MAX LENGTH> (Optional: <FOREGROUND COLOR> <BACKGROUND COLOR>
  512. <DEFAULT>: The number is put into `V40.
  513.  
  514. The READNUM procedure is a very nice string editer to get a number in. It
  515. supports arrow keys and such.
  516.  
  517. @DO READSTRING <MAX LENGTH> <DEFAULT> <VAR TO PUT IT IN> : Get a string.
  518. Uses same string editer as READNUM.
  519.  
  520. Note:  You can only use the `S01 through `S10 vars for READSTRING.  You
  521. can also use these vars for the default.  (or `N)  Use NIL if you want
  522. the default to be nothing.  (if no Var to put it in is specified, it will
  523. be put into `S10 for compatibilty with old .REF's)
  524.  
  525. @DO COPY TO NAME  Put whatever is in `S10 into `N.  (name)
  526.  
  527. To make a string EQUAL something, you would do it like this:
  528. @DO `S04 IS Hello I am
  529. (OR)
  530. @DO `S04 ADD A programmer
  531. (OR)
  532.  
  533. @DO `S04 IS `S02 <- Would copy `S02 to `S04.
  534.  
  535. Note:  There you can only have three spaces per string defination.
  536.        Use the ADD to make a long string.  OR use `X to make spaces, this
  537.        way you can have many spaces in one @DO.
  538.  
  539.  
  540. @IF <Word or var> INSIDE <Word or var> THEN (ect) :  Allows you to search
  541. a string for something inside of it.  Not case sensitive.
  542.  
  543. @DO STRIP <string var> : This strips beginning and end spaces of a string.
  544. @DO UPCASE <string var> : Makes a string all capitals.
  545. @DO <num var> IS LENGTH <String var>  : Gets length, smart way.
  546. @DO <num var> IS REALLENGTH <String var>  : Gets length dumb way. (includes
  547.                                             '`' codes without deciphering
  548.                                             them.)
  549.  
  550.  
  551. @DO PAD <string var> <length> :  Adds spaces to end until string is as long
  552.                                  as <length>.
  553.  
  554. NOTE:  Pad automatically does not include color codes in the length, and DOES
  555.        include varibles in the length.  (like if there was a `s02 inside the
  556.        string)  (my God.. If you were displaying `s01 and it had a `s01 in
  557.                 it, wouldn't it display forever?  I'll have to check that.)
  558.  
  559.  
  560. @IF <name of file> EXISTS TRUE THEN (..ect..)
  561. @IF <name of file> EXISTS FALSE THEN (..ect..)
  562.  
  563. NOTE:  The above "name of file" can be a var, num or string, or even mixed.
  564.        If if not stated, most commands are capable of this.
  565.  
  566. @WRITEFILE <file name>
  567. <Thing to write>
  568. <Thing to write>
  569. <ect until next @ at beginning of string is hit>
  570.  
  571. <Thing to write> can be a varible, (string or num) or it can be a word you
  572.  write - or a combination of the two.
  573.  
  574. Note:  @WRITEFILE appends the lines if the file exists, otherwise it
  575.        creates it.  File locking techniques are used.
  576.  
  577. @READFILE <file name>
  578. <Var to read into>
  579. <Var to read into>
  580. <Ect until next @ at beginning of string is hit>
  581.  
  582. This works just like @WRITEFILE.  You can use String and Number vars, just
  583. be warned if a number var attempts to read a string, you will always get
  584. 0.
  585.  
  586. NOTE:  @READFILE is a smart procedure - It will not run-time error or
  587.        anything, even if you try to read past the end of the file. It
  588.        simply won't change the vars if the file isn't long enough.
  589.  
  590. @DO DELETE <file name>  : Both delete a file.
  591.  
  592. @DO TRIM <file name> <number to trim to> :  This nifty command makes text
  593.                                             file larger than <number to trim
  594.                                             to> get smaller.  (it deletes
  595.                                             lines from the top until file
  596.                                             is correct # of lines, if smaller
  597.                                             than num, it doesn't change the
  598.                                             file)
  599.  
  600. Note:  On *ALL* of these file commands, you cannot give a path.  A path
  601.        will be put in the beginning, so file commands can only be used in
  602.        the current dir.
  603.  
  604.  
  605.  
  606.                    ****** SPECIAL TALKING COMMANDS ******
  607.  
  608.       These commands are tricky to use, they are used in RTNEWS02.REF,
  609.       (the talking to Seth part) but most people probably don't want to
  610.       hassle with getting the pics in the exact right spot for everything
  611.       to look right.  (it's a New World thing)
  612.  
  613.  
  614. @SAY : All text UNDER this will be put in the 'talk window' until a @ is
  615. hit.
  616. @KEY TOP : Does <MORE> prompt at game text window.
  617. @KEY BOTTOM : Does <MORE> prompt at user text window.
  618. @CLEAR NAME : Deletes the name line of the game window.
  619. @CLEAR USERSCREEN: Clears user text.
  620. @CLEAR TEXT: Clears game text.
  621. @CLEAR PICTURE: Clears pic.
  622. @CLEAR ALL : Clears user text, pic, game text, name and redraws screen.
  623.  
  624.                  ****** THE SHELL COMMAND ******
  625.  
  626. NOTE:  THIS FEATURE DOES NOT WORK IN LORD II AT THIS TIME.
  627.  
  628. A powerful feature of RTREADER is the ability to run OTHER programs inside
  629. of it, and return to the exact spot it left automatically.
  630.  
  631. @SHELL <.EXE, BAT or COM> <Parms, up to 8> (note, use `* for node num)
  632.  
  633. When this happens, two files are created.
  634.  
  635. DO<node num>.BAT is created.  This is actually the file that is run.
  636.  
  637. INFO.<node num> is created.  Simular to LORD's INFO.? system.
  638.  
  639. This text file contains the following:
  640.  
  641. Users first name
  642. Users Last Name
  643. Ref file it was reading before shelling
  644. Offset of ref file (where it was when it shelled)
  645. Graphics <- Passed from drop file, usually between 2 and 5.
  646. Time Left
  647. Com Port
  648. Baud Rate
  649. Lockbaud
  650. FOSSIL (or INTERNAL or DIGI)
  651.  
  652. Note:  The procedure RTREADER uses upon 're-entry' is it reads the proper
  653.        NODE<node num>.DAT file, *THEN* it reads the INFO.? file and fills
  654.        in the gaps.  It does read the Time Left back in also.
  655.  
  656.